The next generation of optical disks is known as digital-versatile disk (DVD). The CD-ROM drives on laptop and desktop PCs are being replaced with DVD drives. DVD has a much higher storage capacity than CD-ROM, enough that an entire motion picture can fit on a single DVD disk.
As with most personal computer (PC) hardware, cost and performance are key design constraints. Current DVD-ROM readers have too many components that drive up the cost and area, and performance has not yet reached desired levels. A more integrated DVD system is thus desirable.
The large amount of data read during playback and the low-cost reproduction methods of optical disks increases the likelihood of encountering at least some errors on playback. Error detection and correction is thus important for CD-ROM's and DVD's. Data from CD's and DVD's are arranged into larger blocks that have error-correction information appended. Multiple error-correction bytes allow errors to not only be detected but also located and corrected.
FIG. 1 illustrates a DVD data block with error correction for both rows and columns. Such blocks are typically stored in a buffer while being processed. Performance may dictate that higher-speed static random-access memory (SRAM) buffers rather than lower-cost dynamic random-access memory (DRAM) buffers be used.
Data from DVD disk 18 is read sequentially and stored in a block of data. As the data is read from DVD disk 18, it begins filling row 0 with data bytes 1, 2, 3 . . . until 182 bytes have been read. Error-correction information (ECC) for row 0 is contained in the last ten bytes of the row. Data from DVD disk 18 then begins filling the second row (row 1) with data bytes 173, 174, etc. until a second row of 172 data bytes and 10 ECC bytes has been transferred. Additional ECC bytes for the second row are contained in the last 10 bytes of row 1.
Subsequent rows of data and row-ECC information are read from DVD disk 18 and stored in a buffer memory block until all 192 rows of data have been transferred. Finally, sixteen rows of ECC bytes are read. ECC bytes in the final 16 rows are error-correction bytes for columns of data. For example, the first ECC byte in each of the last 16 rows is for column 0, which includes data byte 1 from row 0, data byte 173 from row 1, . . . , and data byte 32681 for data row 191, a total of 192 data bytes, each from a different row.